#include"DynamicArray.h"
#include<iostream>
#include<ctime>
#include<cstring>

class Student
{
public:                                                                                                                
        
    
        Student(int id,const char *name)
        {            
            this->id=id;
            this->name=name;
        }
     
        friend void PrintStu(void *p);
        friend bool IsidEqual(void *p1,void *p2);
        friend bool IsidBig(void *p1,void *p2);
private:
    int id;
    std::string name;
};
void ClearStu(void *p)
{
    Student*s=(Student*)p;
    delete s;
 
}

void PrintStu(void *p)
{
  Student*s=(Student*)p;
 std::cout<<"学生姓名:"<<s->name<<"学生学号:"<<s->id<<std::endl; 

}
bool IsidEqual(void *p1,void *p2)
{
    Student *s1=(Student*)p1;
    Student *s2=(Student*)p2;
    return s1->id==s2->id;   
}
bool IsidBig(void *p1,void *p2)
{
    Student *s1=(Student*)p1;
    Student *s2=(Student*)p2;
    return s1->id>s2->id;   
}



int main()
{
  
    
    // DynamicArray a;
    // for(int i=1;i<=10;i++)
    // {
    //     a.Inserttail(i);
    // }
    // for(int i=1;i<=10;i++)
    // {
    //     a.InsertHead(i);
    // }
    // a.show();
    // a.InsertByIndex(100,1);
    // a.RemoveByindex(1);
    // a.RemoveByelement(1);

    // ElementType *p=a.FindByIndex(7);
    // if(p)
    //     std::cout<<*p<<std::endl;
    // else
    //     std::cout<<"没找到\n";

    // a.UpdateByIndex(0,99);
    // a.show();
    // a.UpdateByElement(9,999);
    // a.show()
    // a[0]=1009;
    // a.show();
    // std::cout<<a[1]<<std::endl;

    // srand(time(nullptr));
    // DynamicArray a;
    // for(int i=0;i<20;i++)
    // {
    //     a.Inserttail(rand()%10+1);
    // }
    // a.show();
    // a.Sort();
    // a.Duplicate();
    // a.show();
    


    // DynamicArray a;
    // a.Inserttail(1);
    // a.Inserttail(2);
    // a.Inserttail(3);
    // a.Inserttail(4);
    // for(int i=1;i<10;i++)
    //     a.Inserttail(rand()%10+1);
    // a.Sort();
    // a.show();

    // DynamicArray b;
    // b.Inserttail(1);
    // b.Inserttail(2);
    // for(int i=2;i<=10;i++)
    //     b.Inserttail(rand()%10+1);
    // b.Sort();
    // b.show();

    // std::cout<<a.ContinsContains(b)<<std::endl;
    Student *s=new Student(3,"zhangsan");
    Student *s1=new Student(1,"lisi");
    Student *s2=new Student(2,"wangwu");
    Student *s3=new Student(4,"zihao");
    DynamicArray a;
    a.setfunc(ClearStu,IsidEqual,IsidBig,PrintStu);
    a.Inserttail(s);
    a.Inserttail(s1);
    a.Inserttail(s2);
    a.show();
    a.UpdateByElement(s1,s3);
    a.show();

   
  



   

    return 0;
}


